package org.lyc.lanqiao.bank;

import java.util.Arrays;
import java.util.Scanner;

/**
 * 对局匹配
 * https://www.lanqiao.cn/problems/107/learning/?page=1&first_category_id=1&second_category_id=3&difficulty=30
 * <p>
 * 10 0
 * 1 4 2 8 5 7 1 4 2 8
 * 1 2 4 5 7 8
 * <p>
 * 10 1
 * 1 4 2 8 5 7 1 4 2 8
 * 1 1 2 2 4 4 5 7 8 8
 * 1 1 4 4 7 8
 * <p>
 * 10 2
 * 1 4 2 8 5 7 1 4 2 8
 * 1 1 2 2 4 4 5 7 8 8
 * 1 1 2 2 5 8 8
 * <p>
 * 10 3
 * 1 4 2 8 5 7 1 4 2 8
 * 1 1 2 2 4 4 5 7 8 8
 * 1 1 2 2 7 8 8
 *
 * @author Liu Yicong
 * @date 2024/3/4
 */
public class HGameMatching {
	public static void main(String[] args) {
		Scanner scan = new Scanner(System.in);
		int n = scan.nextInt();
		int k = scan.nextInt();
		int[] list = new int[n];
		for (int i = 0; i < n; i++) {
			list[i] = scan.nextInt();
		}
		scan.close();
		System.out.println(bruteForce(list, k));
	}

	/**
	 * 暴力算法
	 *
	 * @param list
	 * @param k
	 * @return
	 */
	private static int bruteForce(int[] list, int k) {
		Arrays.sort(list);
		int n = list.length;
		int count = 0;
		// 遍历数组，寻找差值为指定步长的一对元素
		for (int i = 0; i < n; i++) {
			int v1 = list[i];
			if (v1 == -1) continue; // 跳过已经处理过的元素
			for (int j = i + 1; j < n; j++) {
				int v2 = list[j];
				if (v2 == -1) continue; // 跳过已经处理过的元素
				if (Math.abs(v2 - v1) == k) { // 找到一对符合条件的元素
					count++;
					list[i] = list[j] = -1; // 标记已经处理过的元素
					break;
				}
				if (v2 - v1 > k) break; // 因为数组有序，后续元素的差值只会更大，不可能符合条件。
			}
		}
		return n - count;
	}
}
